// // 将驼峰风格的变量名转换成下划线风格，如： 输入 alipayFirstQuiz 返回 alipay_first_quiz
// function snake2camel(str) {
//   // todo
//   if (!str) return '';

//   let reg = /[A-Z]/g

//   // str = str.replace(reg,function(s){
//   //   console.log($1)
//   //   return s[1].toUpperCase()
//   // })

//   str = str.replace(reg, function(s){
//     return '_'+s.toLowerCase()
//   })
//   return str
// }

// /*******单测部分*******/

// //  snake2camel('alipay');
//  console.log(snake2camel('alipayFirstQuiz'));
//  console.log(snake2camel('aaaa_bb_ccc'))

// 给出一个数组和一个整数目标值 target，你需要找出 2 个数字，他们相加之和等于目标数字，并返回这两个数字的数组下标（升序排序）
// 注：你可以假设给出的入参一定可以找出这样 2 个数字，并且是唯一解
// 注：数组中同一个数字不能使用两遍
// 例子：数组 [3,4,7,15] 目标 10，则 3 + 7 满足目标 10，返回他们的下标 [0, 2]

// function findSum(arr, target) {
//   // todo

//   //判断数组长度是否满足基本条件
//   if (arr.length < 2 || !target) return -1;

//   let newArr = [];

//   for (let i = 0; i < arr.length; i++) {
//     const item1 = arr[i];

//     for (let j = 0; j < arr.length; j++) {
//       const item2 = arr[j];
//       if (item1 + item2 === target) {
//         newArr = [i, j];
//       }
//     }
//   }
//   return newArr.sort((a, b) => a - b)
// }

//   console.log(findSum([1, 2], 3), [0, 1]);
//   // console.log(findSum([4, 5, 13, 9], 13), [0, 3]);
//   // console.log(findSum([4, 5, 13, 9], 14), [1, 3]);
//   // console.log(findSum([4, 5, 13, 9], 9), [0, 1]);
//   // console.log(findSum([1, 8, 10, 11], 21), [2, 3]);

// 输入一个合法的 URL 返回它的 query string 解析结果（数据结构参考下方单元测试）

function parseQueryString(url) {
  url = decodeURIComponent(url);
  // todo
  if (!url) return {};
  if (url.indexOf('?') < 0) return {};

  const obj = {};

  url = url.split('?')[1].split('&').filter(v=>v)

  for (let i = 0; i < url.length; i++) {
    let item = url[i],
      itemMap = item.split('=');
    obj[itemMap[0]] = itemMap[1] || '';
  }

  return obj;
}

// console.log(parseQueryString());
// console.log(parseQueryString('https://google.com'));
// console.log(parseQueryString('https://google.com?'));
// console.log(parseQueryString('https://google.com/?name=jeff&nick=dean'));
console.log( parseQueryString('https://google.com/?name=jeff&nick=&'));
// console.log(parseQueryString('https://google.com/?name=jeff&name'));
// console.log(parseQueryString('https://google.com/?q=%E6%94%AF%E4%BB%98%E5%AE%9D'))

// 将一个 JSON Object 转换成 query string
// 如：输入 { a:1, b:2 } 输出 a=1&b=2
// 注意：需要考虑 URL 转义的情况，如中文或特殊字符

// function toQueryString(map) {
//   // todo
//   // 处理对象不存在或对象为空的情况
//   if (!map || Object.keys(map).length === 0) return '';

//   let arr = [];

//   for (const key in map) {
//     if (Object.hasOwnProperty.call(map, key)) {
//       let val = map[key]?encodeURIComponent(map[key]):''
//       arr.push(key+'='+val);
//     }
//   }

//   return arr.join('&')
// }

// console.log(toQueryString() === '');
// console.log(toQueryString({}) === '');
// console.log(toQueryString({ a: 1, b: 2 }) === 'a=1&b=2');
// console.log(toQueryString({ a: 1, b: undefined }) === 'a=1&b=');
// console.log(toQueryString({ a: 1, b: null }) === 'a=1&b=');
// console.log(toQueryString({ a: '/' }) === 'a=%2F');
